
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>HashMap负载因子0.75怎么来的 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>HashMap负载因子0.75怎么来的 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">在 Java HashMap 中，负载因子（Load Factor）的定义是什么？它的默认值是多少？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">负载因子是一个衡量哈希表已使用容量的度量标准，它表示在哈希表扩容之前允许使用的最大容量比例。当哈希表中的元素数量达到“负载因子 × 容量”时，哈希表就会进行扩容。在 Java 的 HashMap 中，默认负载因子值为 0.75。</div>
          </div>
          <div class="card-source">来源: 负载因子的定义</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">负载因子是如何精确控制 HashMap 的扩容时机的？请举例说明。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当 HashMap 中的元素数量达到负载因子与当前容量的乘积时，HashMap 就会进行扩容。例如，如果 HashMap 的初始容量是 16，负载因子是 0.75，那么当元素数量达到 12（即 16 * 0.75）时，HashMap 就会触发扩容操作，通常将容量扩大一倍。</div>
          </div>
          <div class="card-source">来源: 负载因子在 HashMap中的作用和意义</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">HashMap 设置负载因子的核心目的是为了平衡哪两个关键指标？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">负载因子的核心目的是在“时间效率”和“空间利用率”之间找到一个平衡点。一个较低的负载因子会减少哈希冲突（提高时间效率）但增加内存开销；一个较高的负载因子能更高效地利用内存（提高空间利用率）但会增加哈希冲突的风险，从而可能降低性能。</div>
          </div>
          <div class="card-source">来源: 空间利用率和时间效率的平衡</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">设置一个较低的负载因子（例如 0.5）对 HashMap 有什么优点和缺点？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">优点是减少哈希冲突，提高查找、插入和删除操作的性能。缺点是增加内存开销，导致更多的空闲空间，并且会因为更早达到扩容阈值而导致更频繁的扩容操作。</div>
          </div>
          <div class="card-source">来源: 负载因子在 HashMap中的作用和意义</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">设置一个较高的负载因子（例如 0.9）对 HashMap 有什么优点和缺点？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">优点是能更高效地利用内存，减少扩容次数。缺点是会增加哈希冲突的概率，可能导致桶中的链表或红黑树变长，从而降低查找、插入和删除操作的性能，甚至在最坏情况下退化到 O(n)。</div>
          </div>
          <div class="card-source">来源: 负载因子在 HashMap中的作用和意义</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在什么类型的应用场景下，建议将 HashMap 的负载因子调低？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">在对性能要求极高的场景中，特别是需要频繁进行插入和查找操作的应用，例如实时数据处理系统。降低负载因子可以减少哈希冲突，从而提高操作效率，确保较低的响应时间。</div>
          </div>
          <div class="card-source">来源: 实际应用中的负载因子调整</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在什么类型的应用场景下，可以考虑将 HashMap 的负载因子调高？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">在内存资源受限的环境中，例如嵌入式系统或移动设备。提高负载因子可以减少扩容的频率和内存占用，从而更高效地利用有限的内存资源。</div>
          </div>
          <div class="card-source">来源: 实际应用中的负载因子调整</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在 Java 代码中，如何创建一个具有自定义初始容量和负载因子的 HashMap？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">可以通过 HashMap 的构造函数来指定初始容量和负载因子。示例代码：`HashMap<String, Integer> map = new HashMap<>(16, 0.5f);`，这行代码创建了一个初始容量为16，负载因子为0.5的 HashMap。</div>
          </div>
          <div class="card-source">来源: 实际应用中的负载因子调整</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">当 HashMap 因为达到负载因子阈值而触发扩容时，其内部元素会经历怎样的过程？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">扩容过程主要包括两个步骤：1. 重新计算哈希值：所有现有元素都需要根据新的容量重新计算其哈希值。2. 再分布元素：将所有元素重新分配到新的、容量更大的哈希表中，以减少未来的哈希冲突。</div>
          </div>
          <div class="card-source">来源: 负载因子的定义</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
